perm filename TRNSP.F4[MSS,LCS]1 blob sn#186055 filedate 1975-11-12 generic text, type T, neo UTF8
00100		SUBROUTINE TRNSP(IT,TR)
00200		COMMON /PX/KPN(1) /Q/Q(1) /XRN/RN(1) /STF/RFAC(1) /LLL/LEND
00300	CC	DIMENSION JSIG(14)
00400	CC	DATA JSIG/4,1,5,2,6,3,0,0,3,6,2,5,1,4/
00500	
00600		KSIG=99
00700		SIG=0
00750		NSIG=-1
00800		SLUR=0
00900		PRX=99
00910		MS=0
00920		TTR=AMOD(TR,7.0)
01000		K=1
01100		DO 47 L=1,IT
01200		J=KPN(L)
01300		X=Q(J+1)
01400		IF(X.EQ.17)GO TO 199
01500	C  FOUND KSIG, SO DON'T DO THE REST
01700		IF(X.EQ.3)MS=L
01800	C  REMEMBER WHERE CLEF IS
01900	47	IF(X.LT.3)GO TO 41
02000	C  LEAVE LOOP IF WE'VE GONE TOO FAR.
02050	41	IF(TTR.EQ.0)GO TO 199
02100		TYPE 42
02200	42	FORMAT(' ADD KEY SIG? -- ',$)
02300	43	FORMAT(A1)
02400		ACCEPT 43,X
02500		IF(X.NE.'Y')GO TO 199
02600	C  NEXT EXPANDS DATA.  PUT THIS IN FAIL LATER
02700		J=KPN(MS+1)
02800		L=KPN(IT)+7
02900		DO 45 N=L,J,-1
03000	45	Q(N+7)=Q(N)
03100		DO 46 N=IT+2,MS+1,-1
03200	46	KPN(N+1)=KPN(N)+7
03210		L=KPN(MS+1)
03220		Q(L)=4
03230		Q(L+1)=17
03240	CC  IT'S ALREADY 0 *****	Q(L+2)=0
03250		Q(L+3)=7*RFAC(9)
03260		Q(L+4)=0
03270		Q(L+5)=0
03280	C  THIS WILL BE CHANGED LATER.
03290		Q(L+6)=CLFNUM(Q,KPN,MS)
03295	C GETS THE CLEF NUM.
03300	CC	KPN(MS+1)=KPN(MS)+6
03400		IT=IT+1
03450		LEND=IT+1
03460		CALL EXPND(MS,0)
03470	C  2ND ARG IS DUMMY -- LINE IS SHIFTED TO RT.
03500	
03600	199	J=KPN(K)
03700		X=Q(J+1)
03800		IF(X.EQ.1)GO TO 1
03900		IF(X.NE.3)GO TO 2
04000		CLEF=Q(J+5)
04100		IF(Q(J).LT.3)CLEF=0
04200		IF(TR.NE.8)GO TO 100
04300		IF(CLEF.NE.0)Q(J+5)=0
04400		IF(CLEF.LT.100)GO TO 100
04500	CC	Q(J+1)=1089.
04600		CALL SHRNK(K,IT)
04700	C  MAKE IT INVISIBLE IF IT WAS MINI.
04800		CLEF=CLEF-100
04900		GO TO 199
05000	2	IF(X.NE.4)GO TO 20
05100		BAR=-1
05200		MS=1
05210		GO TO 100
05300	20	IF(X.NE.17)GO TO 12
05400	C  HOW ABOUT CHANGE TO NO SIG?  OK, CODE =99
05410		NSIG=0
05500	2000	ADD=2
05600		IF(TR.EQ.4)ADD=1
05700		IF(TR.EQ.2)ADD=-3
05800	C 4=F, 3=G, 2=A, -2=E FLAT
05900		IF(TR.EQ.-2)ADD=3
06000		IF(TR.EQ.3)ADD=-1
06050		IF(TTR.EQ.0)ADD=0
06100		R=0
06200		IF(X.EQ.17)R=Q(J+5)
06300		SIG=R
06400		R=ADD+R
06500		KSIG=R
06575	C  FOR LATER CHECKS
06600	C  TO USE IN IMPROVED ROUTINE
06700	C*******  ADD NO-YES SIG FEATURE *******
06800		IF(X.EQ.1)GO TO 1000
06900		Q(J+5)=R
07000		IF(R.NE.0)GO TO 399
07100		CALL SHRNK(K,IT)
07200		K=K-1
07300	CC	IF(ADD.EQ.0)Q(J+1)=1089.
07400	C  CHANGE CODE TO 99 IF NO SIG.(1089.=11.*99.)
07430	399	IF(CLEF.NE.1)GO TO 100
07445	C  ONLY FOR BASS CLEF KSIGS (FR. HORN, BASS CLAR)
07460		R=CLEF
07500		IF(TR.EQ.8)R=0
07550		Q(J+6)=R
07600		GO TO 100
07700	12	IF(X.EQ.5)GO TO 120
07800		IF(X.NE.6)GO TO 100
07900	120	RT=TR
08000		IF(RT.NE.8)GO TO 121
08100		IF(CLEF.EQ.1)RT=-4
08200	121	Q(J+4)=Q(J+4)+RT
08300		Q(J+5)=Q(J+5)+RT
08400		IF(X.EQ.5)SLUR=Q(J+6)
08500	C  SAVES RIGHT POS. OF SLUR
08600		GO TO 100
08700	C  FOR BEAMS AND SLURS
08800	
08900	1	IF(KSIG.EQ.99)GO TO 2000
09000	1000	RT=TR
09100		R=Q(J+4)
09200		RX=AMOD(R,100.0)
09300		RZ=AMOD(RX,7.0)
09400	C  THE NOTE NUM
09500		R5=Q(J+5)
09600		A=AMOD(R5,10.0)
09700	C  THE ACCI
09800		RN(MS)=A
09900		RN(MS+1)=RX
10000	C  SAVE FOR REPEATS
10100		MS=MS+2
10200		CHNAT=3
10300		IF(MS.LT.4)GO TO 205
10400		N=MS-3
10500	200	IF(RX.NE.RN(N))GO TO 201
10600		IF(A.EQ.0)GO TO 204
10700	C  NOW WE'VE FOUND THE SAME NOTE WITH NO ACCI IN SAME MEAS.
10800		IF(A.EQ.RN(N-1))GO TO 204
10900		GO TO 203
11000	204	IF(TR.NE.8)GO TO 4
11100		IF(CLEF.EQ.1)RT=RT-12
11200	C  FOR BSCLAR
11300		GO TO 4
11400	201	N=N-2
11500		IF(N.GT.0)GO TO 200
11600	205	IF(NSIG)CHNAT=0
11700	203	ADD=A
11800	C  THE CHANGE IN ACCI
11900		IF(PRX.NE.RX)GO TO 44
12000	C IF PREV ACCI AND NT ARE SAME, SKIP OVER.
12100		IF(A.NE.0)GO TO 44
12200	C NOW SAME NOTE, NO ACCI
12300		IF(ABS(SLUR-Q(J+3)).LT.3)GO TO 204
12400	C  FOUND CONNECTING TIE
12500	44	IF(NSIG)GO TO 440
12600		IF(A.EQ.0)GO TO 443
12700	C  ONLY CHECKS ON MOTES WITH NO ACCI
13600	
13700	440	IF(TR.NE.1)GO TO 5
13800	C  NEXT FOR B-FLAT TRANSPOSITIONS
13900	9	IF(RZ.EQ.0)GO TO 7
14000		IF(RZ.NE.3)GO TO 4
14100	C NOW FOUND A B OR E
14200	7	IF(A.EQ.0)GO TO 70
14300		IF(A.NE.3)GO TO 71
14400	C  CHNG NO ACCI OR NAT TO SHARP
14500	70	ADD=2
14600	71	IF(A.EQ.1)GO TO 30
14700	C  CHNG FLAT TO NAT.
14800		IF(A.NE.2)GO TO 3
14900	C  NEXT FOR B#, E#
15000		RT=RT+1
15100	C  MOVE IT UP A STEP
15200	30	ADD=CHNAT
15300	C  MAKE IT NAT. IF NEEDED
15400	3	Q(J+5)=R5-A+ADD
15500	4	PRX=RX
15600	40	Q(J+4)=R+RT
15700		BAR=0
15800		GO TO 100
15900	
15910	443	IF(CLEF.NE.1)GO TO 4
16000	5	IF(TR.NE.4)GO TO 6
16100	C FOUND "F" TRANS.
16200		IF(CLEF.EQ.1)GO TO 60
16300	C  MAKE ADJUSTMENT FOR BASS CLEF
16400	8	IF(RZ.EQ.0)GO TO 7
16500		GO TO 4
16600	
16700	6	IF(TR.NE.8)GO TO 10
16800	C NEXT FOR BSCLAR.---ADD OTHERS HERE!!!
16900		IF(CLEF.NE.1)GO TO 61
17000	60	RZ=RZ-5
17100		IF(RZ)RZ=RZ+7
17200		IF(TR.EQ.4)GO TO 8
17300		RT=RT-12
17400	61	IF(NSIG)GO TO 9
17420		IF(A.NE.0)GO TO 9
17450		GO TO 4
17500	10	IF(TR.NE.2)GO TO 11
17600		IF(RZ.EQ.1)GO TO 101
17700		IF(RZ.EQ.4)GO TO 101
17800		IF(RZ.NE.5)GO TO 4
17900	C  FOR "A".  FINDS C,F AND G.
18000	101	IF(A.EQ.0)GO TO 102
18100		IF(A.NE.3)GO TO 103
18200	C  FINDS NO ACCI OR NAT.
18300	102	ADD=1
18400	103	IF(A.EQ.2)GO TO 30
18500		GO TO 3
18600	11	IF(TR.NE.3)GO TO 110
18700		IF(RZ.NE.4)GO TO 4
18800		ADD=1
18900	C  "G"   F→Bb, F#→B NAT.
19000		IF(A.EQ.2)GO TO 30
19100	C  NOTHING FOR bb OR ## YET
19200		GO TO 3
19300	110	IF(TR.NE.-2)GO TO 4
19350	C  IF NOT -2 IT IS NOW THOUGHT TO BE SOME OCTAVE SHIFT.
19400		IF(RZ.EQ.3)GO TO 111
19500		IF(RZ.EQ.0)GO TO 111
19600		IF(RZ.NE.6)GO TO 4
19700	111	IF(A.EQ.0)GO TO 112
19800		IF(A.NE.3)GO TO 113
19900	112	ADD=2
20000	113	IF(A.EQ.1)GO TO 30
20100	C  FOR Eb TRNS
20200		GO TO 3
20300	100	IF(K.GE.IT)GO TO 299
20400		K=K+1
20500		GO TO 199
20600	299	CALL RVRS(IT)
20700	C  TO REVERSE STEMS, BEAMS AND SLURS
20800		END